package com.xbongbong.saas.domain.dao;

import com.xbongbong.saas.domain.entity.CustomerRuleEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author youli.chen
 * @ProjectName xbb-pro
 * @Description: 客户公海池规则
 * @date 2019/1/23 21:53
 */
public interface CustomerRuleDao {
    /**
     * 新建
     *
     * @param customerRule
     * @return 创建时间： 2018-6-4 下午3:26:30
     * 修改时间： 2018-6-4 下午3:26:30 chy
     * @author chy
     * @version v3.22
     * @since v3.22
     */
    Integer insert(CustomerRuleEntity customerRule);

    /**
     * 更新
     *
     * @param customerRule
     * @return 创建时间： 2018-6-4 下午3:26:50
     * 修改时间： 2018-6-4 下午3:26:50 chy
     * @author chy
     * @version v3.22
     * @since v3.22
     */
    Integer update(CustomerRuleEntity customerRule);

    /**
     * 逻辑删除
     *
     * @param key
     * @param corpid
     * @return 创建时间： 2018-6-4 下午3:27:08
     * 修改时间： 2018-6-4 下午3:27:08 chy
     * @author chy
     * @version v3.22
     * @since v3.22
     */
    Integer deleteByKey(@Param("key") Integer key, @Param("corpid") String corpid);

    /**
     * 获取公海规则
     *
     * @param key
     * @param corpid
     * @return 创建时间： 2018-6-4 下午3:27:29
     * 修改时间： 2018-6-4 下午3:27:29 chy
     * @author chy
     * @version v3.22
     * @since v3.22
     */
    CustomerRuleEntity getByKey(@Param("key") Integer key, @Param("corpid") String corpid);

    /**
     * 获取某公司指定类型的公海规则
     *
     * @param ruleType
     * @param corpid
     * @return 创建时间： 2018-6-4 下午3:27:33
     * 修改时间： 2018-6-4 下午3:27:33 chy
     * @author chy
     * @version v3.22
     * @since v3.22
     */
    CustomerRuleEntity getByRuleType(@Param("ruleType") Integer ruleType, @Param("corpid") String corpid);

    /**
     * 获取公海规则列表
     *
     * @param param
     * @return 创建时间： 2018-6-4 下午3:27:36
     * 修改时间： 2018-6-4 下午3:27:36 chy
     * @author chy
     * @version v3.22
     * @since v3.22
     */
    List<CustomerRuleEntity> findEntitys(@Param("param") Map<String, Object> param);

    /**
     * 获取公海规则列表数
     *
     * @param param
     * @return 创建时间： 2018-6-4 下午3:27:40
     * 修改时间： 2018-6-4 下午3:27:40 chy
     * @author chy
     * @version v3.22
     * @since v3.22
     */
    Integer getEntitysCount(@Param("param") Map<String, Object> param);

    /**
     * 获取有设置公海规则的公司id
     *
     * @param now
     * @param startCorpid
     * @param pageNum
     * @return 创建时间： 2018-6-4 下午3:27:44
     * 修改时间： 2018-6-4 下午3:27:44 chy
     * @author chy
     * @version v3.22
     * @since v3.22
     */
    List<String> findCorps(@Param("now") Long now, @Param("startCorpid") String startCorpid, @Param("pageNum") Integer pageNum);

    /**
     * 获取有设置公海规则的公司数
     *
     * @return 创建时间： 2018-6-4 下午3:27:48
     * 修改时间： 2018-6-4 下午3:27:48 chy
     * @author chy
     * @version v3.22
     * @since v3.22
     */
    Integer getCorpsCount(@Param("now") Long now);

    Integer updateDelByCorpid(@Param("del") Integer del, @Param("corpid") String corpid);
}
